home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / puma.lha / puma / m2c / Parser.c < prev    next >
C/C++ Source or Header  |  1992-09-25  |  72KB  |  1,782 lines

  1. #include "SYSTEM_.h"
  2.  
  3. #ifndef DEFINITION_Scanner
  4. #include "Scanner.h"
  5. #endif
  6.  
  7. #ifndef DEFINITION_Positions
  8. #include "Positions.h"
  9. #endif
  10.  
  11. #ifndef DEFINITION_Errors
  12. #include "Errors.h"
  13. #endif
  14.  
  15. #ifndef DEFINITION_Strings
  16. #include "Strings.h"
  17. #endif
  18.  
  19. #ifndef DEFINITION_DynArray
  20. #include "DynArray.h"
  21. #endif
  22.  
  23. #ifndef DEFINITION_Sets
  24. #include "Sets.h"
  25. #endif
  26.  
  27. #ifndef DEFINITION_System
  28. #include "System.h"
  29. #endif
  30.  
  31. #ifndef DEFINITION_StringMem
  32. #include "StringMem.h"
  33. #endif
  34.  
  35. #ifndef DEFINITION_Strings
  36. #include "Strings.h"
  37. #endif
  38.  
  39. #ifndef DEFINITION_Idents
  40. #include "Idents.h"
  41. #endif
  42.  
  43. #ifndef DEFINITION_Texts
  44. #include "Texts.h"
  45. #endif
  46.  
  47. #ifndef DEFINITION_Scanner
  48. #include "Scanner.h"
  49. #endif
  50.  
  51. #ifndef DEFINITION_Positions
  52. #include "Positions.h"
  53. #endif
  54.  
  55. #ifndef DEFINITION_Tree
  56. #include "Tree.h"
  57. #endif
  58.  
  59. #ifndef DEFINITION_Parser
  60. #include "Parser.h"
  61. #endif
  62.  
  63. struct Parser_1 Parser_ParsTabName;
  64.  
  65. static Strings_tString String1, String2;
  66. static INTEGER NameCount;
  67. static Positions_tPosition Line;
  68. static Tree_tTree nNoParameter, nNoName, nNoRule, nNoDesignator, nNoStatement, nNoLayout, nNoPatternsList;
  69. static Tree_tTree mRules ARGS((Positions_tPosition Line, Tree_tTree Patterns, Tree_tTree Exprs, Tree_tTree Expr, Tree_tTree Statements, Tree_tTree Next));
  70. typedef struct S_1 {
  71.     Idents_tIdent Id;
  72. } yyTrafoName;
  73. typedef struct S_2 {
  74.     Tree_tTree Tree;
  75. } yyTreePart;
  76. typedef struct S_3 {
  77.     Tree_tTree Tree;
  78. } yyTreeNames;
  79. typedef struct S_4 {
  80.     Tree_tTree Tree;
  81. } yyPublicPart;
  82. typedef struct S_5 {
  83.     Tree_tTree Tree;
  84. } yyExternPart0;
  85. typedef struct S_6 {
  86.     Tree_tTree Tree;
  87. } yyExternPart;
  88. typedef struct S_7 {
  89.     Tree_tTree Tree;
  90. } yyNames;
  91. typedef struct S_8 {
  92.     Tree_tTree Tree;
  93. } yyCodes;
  94. typedef struct S_9 {
  95.     Tree_tTree Tree;
  96. } yyRoutines;
  97. typedef struct S_10 {
  98.     Tree_tTree Tree;
  99. } yyOutParameters;
  100. typedef struct S_11 {
  101.     Tree_tTree Tree;
  102. } yyParameters;
  103. typedef struct S_12 {
  104.     BOOLEAN IsRef;
  105. } yyMode;
  106. typedef struct S_13 {
  107.     Tree_tTree Tree;
  108. } yyDeclarations;
  109. typedef struct S_14 {
  110.     Tree_tTree Tree;
  111. } yyType;
  112. typedef struct S_15 {
  113.     Texts_tText Text;
  114.     Positions_tPosition Position;
  115. } yyLocalCode;
  116. typedef struct S_16 {
  117.     Tree_tTree Tree;
  118. } yyRules;
  119. typedef struct S_17 {
  120.     Tree_tTree Tree;
  121. } yyPatterns;
  122. typedef struct S_18 {
  123.     Tree_tTree Tree;
  124. } yyPatterns2;
  125. typedef struct S_19 {
  126.     Tree_tTree Tree;
  127. } yyExprs;
  128. typedef struct S_20 {
  129.     Tree_tTree Tree;
  130. } yyNamedExprs;
  131. typedef struct S_21 {
  132.     Tree_tTree Tree;
  133. } yyExprs2;
  134. typedef struct S_22 {
  135.     Tree_tTree Tree;
  136. } yyNamedExprs2;
  137. typedef struct S_23 {
  138.     Tree_tTree Tree;
  139. } yyExpr;
  140. typedef struct S_24 {
  141.     Tree_tTree Tree;
  142. } yyPrefixExpr;
  143. typedef struct S_25 {
  144.     Tree_tTree Tree;
  145. } yyPostfixExpr;
  146. typedef struct S_26 {
  147.     Tree_tTree Tree;
  148. } yyPrimaryExpr;
  149. typedef struct S_27 {
  150.     Tree_tTree Tree;
  151. } yyStatements;
  152. typedef struct S_28 {
  153.     Tree_tTree Tree;
  154. } yyTargetCodes;
  155. typedef struct S_29 {
  156.     Idents_tIdent Id;
  157.     Positions_tPosition Position;
  158. } yyName0;
  159. typedef struct S_30 {
  160.     Idents_tIdent Id;
  161.     Positions_tPosition Position;
  162. } yyName1;
  163. typedef struct S_31 {
  164.     Tree_tTree Tree;
  165. } yySpace;
  166. typedef struct S_32 {
  167.     union {
  168.         struct {
  169.             Scanner_tScanAttribute Scan;
  170.         } V_1;
  171.         struct {
  172.             yyTrafoName TrafoName;
  173.         } V_2;
  174.         struct {
  175.             yyTreePart TreePart;
  176.         } V_3;
  177.         struct {
  178.             yyTreeNames TreeNames;
  179.         } V_4;
  180.         struct {
  181.             yyPublicPart PublicPart;
  182.         } V_5;
  183.         struct {
  184.             yyExternPart0 ExternPart0;
  185.         } V_6;
  186.         struct {
  187.             yyExternPart ExternPart;
  188.         } V_7;
  189.         struct {
  190.             yyNames Names;
  191.         } V_8;
  192.         struct {
  193.             yyCodes Codes;
  194.         } V_9;
  195.         struct {
  196.             yyRoutines Routines;
  197.         } V_10;
  198.         struct {
  199.             yyOutParameters OutParameters;
  200.         } V_11;
  201.         struct {
  202.             yyParameters Parameters;
  203.         } V_12;
  204.         struct {
  205.             yyMode Mode;
  206.         } V_13;
  207.         struct {
  208.             yyDeclarations Declarations;
  209.         } V_14;
  210.         struct {
  211.             yyType Type;
  212.         } V_15;
  213.         struct {
  214.             yyLocalCode LocalCode;
  215.         } V_16;
  216.         struct {
  217.             yyRules Rules;
  218.         } V_17;
  219.         struct {
  220.             yyPatterns Patterns;
  221.         } V_18;
  222.         struct {
  223.             yyPatterns2 Patterns2;
  224.         } V_19;
  225.         struct {
  226.             yyExprs Exprs;
  227.         } V_20;
  228.         struct {
  229.             yyNamedExprs NamedExprs;
  230.         } V_21;
  231.         struct {
  232.             yyExprs2 Exprs2;
  233.         } V_22;
  234.         struct {
  235.             yyNamedExprs2 NamedExprs2;
  236.         } V_23;
  237.         struct {
  238.             yyExpr Expr;
  239.         } V_24;
  240.         struct {
  241.             yyPrefixExpr PrefixExpr;
  242.         } V_25;
  243.         struct {
  244.             yyPostfixExpr PostfixExpr;
  245.         } V_26;
  246.         struct {
  247.             yyPrimaryExpr PrimaryExpr;
  248.         } V_27;
  249.         struct {
  250.             yyStatements Statements;
  251.         } V_28;
  252.         struct {
  253.             yyTargetCodes TargetCodes;
  254.         } V_29;
  255.         struct {
  256.             yyName0 Name0;
  257.         } V_30;
  258.         struct {
  259.             yyName1 Name1;
  260.         } V_31;
  261.         struct {
  262.             yySpace Space;
  263.         } V_32;
  264.     } U_1;
  265. } tParsAttribute;
  266. #define yyInitStackSize    100
  267. #define yyNoState    0
  268. #define yyFirstTerminal    0
  269. #define yyLastTerminal    47
  270. #define yyFirstSymbol    0
  271. #define yyLastSymbol    82
  272. #define yyTableMax    682
  273. #define yyNTableMax    252
  274. #define yyFirstReadState    1
  275. #define yyLastReadState    159
  276. #define yyFirstReadTermState    160
  277. #define yyLastReadTermState    216
  278. #define yyLastReadNontermState    238
  279. #define yyFirstReduceState    239
  280. #define yyLastReduceState    362
  281. #define yyStartState    1
  282. #define yyStopState    239
  283. #define yyFirstFinalState    yyFirstReadTermState
  284. #define yyLastState    yyLastReduceState
  285. typedef SHORTCARD yyTableElmt;
  286. typedef yyTableElmt yyTCombRange;
  287. typedef yyTableElmt yyNCombRange;
  288. typedef yyTableElmt yyStateRange;
  289. typedef yyTableElmt yyReadRange;
  290. typedef yyTableElmt yyReadReduceRange;
  291. typedef yyTableElmt yyReduceRange;
  292. typedef yyTableElmt yySymbolRange;
  293. typedef struct S_33 {
  294.     yyStateRange Check, Next;
  295. } yyTCombType;
  296. typedef yyStateRange yyNCombType;
  297. typedef yyTCombType *yyTCombTypePtr;
  298. typedef yyNCombType *yyNCombTypePtr;
  299. typedef struct S_34 {
  300.     yyStateRange A[1000000 + 1];
  301. } *yyStackType;
  302. static struct S_35 {
  303.     yyTCombTypePtr A[yyLastReadState + 1];
  304. } yyTBasePtr;
  305. static struct S_36 {
  306.     yyNCombTypePtr A[yyLastReadState + 1];
  307. } yyNBasePtr;
  308. static struct S_37 {
  309.     yyReadRange A[yyLastReadState + 1];
  310. } yyDefault;
  311. static struct S_38 {
  312.     yyTCombType A[yyTableMax + 1];
  313. } yyTComb;
  314. static struct S_39 {
  315.     yyNCombType A[yyNTableMax - (yyLastTerminal + 1) + 1];
  316. } yyNComb;
  317. static struct S_40 {
  318.     yyTableElmt A[yyLastReduceState - yyFirstReduceState + 1];
  319. } yyLength;
  320. static struct S_41 {
  321.     yySymbolRange A[yyLastReduceState - yyFirstReduceState + 1];
  322. } yyLeftHandSide;
  323. static struct S_42 {
  324.     yySymbolRange A[yyLastReadState + 1];
  325. } yyContinuation;
  326. static struct S_43 {
  327.     yyReduceRange A[yyLastReadNontermState - yyFirstReadTermState + 1];
  328. } yyFinalToProd;
  329. static BOOLEAN yyIsInitialized;
  330. static System_tFile yyTableFile;
  331. static void Copy ARGS((CHAR Source[], LONGCARD , CHAR Target[], LONGCARD ));
  332. struct S_47 {
  333.     tParsAttribute A[1000000 + 1];
  334. };
  335. struct S_48 {
  336.     CHAR A[127 + 1];
  337. };
  338. static void ErrorRecovery ARGS((yySymbolRange *Terminal, yyStackType StateStack, LONGINT StackSize, LONGINT StackPtr));
  339. struct S_49 {
  340.     CHAR A[127 + 1];
  341. };
  342. static void ComputeContinuation ARGS((yyStackType Stack, LONGINT StackSize, LONGINT StackPtr, Sets_tSet *ContinueSet));
  343. static BOOLEAN IsContinuation ARGS((yySymbolRange Terminal, yyStackType ParseStack, LONGINT StackSize, LONGINT StackPtr));
  344. static void ComputeRestartPoints ARGS((yyStackType ParseStack, LONGINT StackSize, LONGINT StackPtr, Sets_tSet *RestartSet));
  345. static yyStateRange Next ARGS((yyStateRange State, yySymbolRange Symbol));
  346. static void yyGetTables ARGS(());
  347. struct S_50 {
  348.     yyTCombRange A[yyLastReadState + 1];
  349. };
  350. struct S_51 {
  351.     yyNCombRange A[yyLastReadState + 1];
  352. };
  353. static CARDINAL yyGetTable ARGS((ADDRESS Address));
  354. static void yyErrorCheck ARGS((INTEGER ErrorCode, INTEGER Info));
  355. static void BeginParser ARGS(());
  356.  
  357.  
  358. static Tree_tTree mRules
  359. # ifdef __STDC__
  360. (Positions_tPosition Line, Tree_tTree Patterns, Tree_tTree Exprs, Tree_tTree Expr, Tree_tTree Statements, Tree_tTree Next)
  361. # else
  362. (Line, Patterns, Exprs, Expr, Statements, Next)
  363. Positions_tPosition Line;
  364. Tree_tTree Patterns, Exprs, Expr, Statements, Next;
  365. # endif
  366. {
  367.   Tree_tTree Tree;
  368.  
  369.   Tree = Tree_mRule(Line, Patterns->U_1.V_48.OnePatternsList.Patterns, Exprs, Expr, Statements, Next);
  370.   Patterns = Patterns->U_1.V_48.OnePatternsList.Next;
  371.   while (Patterns->U_1.V_1.Kind == Tree_OnePatternsList) {
  372.     Tree = Tree_mRule(Line, Patterns->U_1.V_48.OnePatternsList.Patterns, Tree_CopyTree(Exprs), Tree_CopyTree(Expr), Tree_CopyTree(Statements), Tree);
  373.     Patterns = Patterns->U_1.V_48.OnePatternsList.Next;
  374.   }
  375.   return Tree;
  376. }
  377.  
  378. static void Copy
  379. # ifdef __STDC__
  380. (CHAR Source[], LONGCARD O_2, CHAR Target[], LONGCARD O_1)
  381. # else
  382. (Source, O_2, Target, O_1)
  383. CHAR Source[];
  384. LONGCARD O_2;
  385. CHAR Target[];
  386. LONGCARD O_1;
  387. # endif
  388. {
  389.   CARDINAL i, j;
  390.   OPEN_ARRAY_LOCALS
  391.  
  392.   ALLOC_OPEN_ARRAYS(O_2 * sizeof(CHAR), 1)
  393.   COPY_OPEN_ARRAY(Source, O_2, CHAR)
  394.   if ((O_2 - 1) < (O_1 - 1)) {
  395.     j = (O_2 - 1);
  396.   } else {
  397.     j = (O_1 - 1);
  398.   }
  399.   {
  400.     LONGCARD B_1 = 0, B_2 = j;
  401.  
  402.     if (B_1 <= B_2)
  403.       for (i = B_1;; i += 1) {
  404.         Target[i] = Source[i];
  405.         if (i >= B_2) break;
  406.       }
  407.   }
  408.   if ((O_1 - 1) > j) {
  409.     Target[j + 1] = CHR(0);
  410.   }
  411.   FREE_OPEN_ARRAYS
  412. }
  413.  
  414. void Parser_TokenName
  415. # ifdef __STDC__
  416. (CARDINAL Token, CHAR Name[], LONGCARD O_3)
  417. # else
  418. (Token, Name, O_3)
  419. CARDINAL Token;
  420. CHAR Name[];
  421. LONGCARD O_3;
  422. # endif
  423. {
  424.   switch (Token) {
  425.   case 0:;
  426.     Copy((STRING)"_EndOfFile", 10L, Name, O_3);
  427.     break;
  428.   case 1:;
  429.     Copy((STRING)"Ident", 5L, Name, O_3);
  430.     break;
  431.   case 2:;
  432.     Copy((STRING)"Operator", 8L, Name, O_3);
  433.     break;
  434.   case 3:;
  435.     Copy((STRING)"IncOperator", 11L, Name, O_3);
  436.     break;
  437.   case 4:;
  438.     Copy((STRING)"TargetBlock", 11L, Name, O_3);
  439.     break;
  440.   case 5:;
  441.     Copy((STRING)"String", 6L, Name, O_3);
  442.     break;
  443.   case 6:;
  444.     Copy((STRING)"Number", 6L, Name, O_3);
  445.     break;
  446.   case 7:;
  447.     Copy((STRING)"TargetCode", 10L, Name, O_3);
  448.     break;
  449.   case 8:;
  450.     Copy((STRING)"WhiteSpace", 10L, Name, O_3);
  451.     break;
  452.   case 9:;
  453.     Copy((STRING)"::", 2L, Name, O_3);
  454.     break;
  455.   case 10:;
  456.     Copy((STRING)"TRAFO", 5L, Name, O_3);
  457.     break;
  458.   case 11:;
  459.     Copy((STRING)"TREE", 4L, Name, O_3);
  460.     break;
  461.   case 12:;
  462.     Copy((STRING)",", 1L, Name, O_3);
  463.     break;
  464.   case 13:;
  465.     Copy((STRING)"PUBLIC", 6L, Name, O_3);
  466.     break;
  467.   case 14:;
  468.     Copy((STRING)"EXTERN", 6L, Name, O_3);
  469.     break;
  470.   case 15:;
  471.     Copy((STRING)";", 1L, Name, O_3);
  472.     break;
  473.   case 16:;
  474.     Copy((STRING)"EXPORT", 6L, Name, O_3);
  475.     break;
  476.   case 17:;
  477.     Copy((STRING)"IMPORT", 6L, Name, O_3);
  478.     break;
  479.   case 18:;
  480.     Copy((STRING)"GLOBAL", 6L, Name, O_3);
  481.     break;
  482.   case 19:;
  483.     Copy((STRING)"BEGIN", 5L, Name, O_3);
  484.     break;
  485.   case 20:;
  486.     Copy((STRING)"CLOSE", 5L, Name, O_3);
  487.     break;
  488.   case 21:;
  489.     Copy((STRING)"PROCEDURE", 9L, Name, O_3);
  490.     break;
  491.   case 22:;
  492.     Copy((STRING)"(", 1L, Name, O_3);
  493.     break;
  494.   case 23:;
  495.     Copy((STRING)"REF", 3L, Name, O_3);
  496.     break;
  497.   case 24:;
  498.     Copy((STRING)":", 1L, Name, O_3);
  499.     break;
  500.   case 25:;
  501.     Copy((STRING)".", 1L, Name, O_3);
  502.     break;
  503.   case 26:;
  504.     Copy((STRING)"[", 1L, Name, O_3);
  505.     break;
  506.   case 27:;
  507.     Copy((STRING)"]", 1L, Name, O_3);
  508.     break;
  509.   case 28:;
  510.     Copy((STRING)"=>", 2L, Name, O_3);
  511.     break;
  512.   case 29:;
  513.     Copy((STRING)")", 1L, Name, O_3);
  514.     break;
  515.   case 30:;
  516.     Copy((STRING)"LOCAL", 5L, Name, O_3);
  517.     break;
  518.   case 31:;
  519.     Copy((STRING)"..", 2L, Name, O_3);
  520.     break;
  521.   case 32:;
  522.     Copy((STRING)"NIL", 3L, Name, O_3);
  523.     break;
  524.   case 33:;
  525.     Copy((STRING)"_", 1L, Name, O_3);
  526.     break;
  527.   case 34:;
  528.     Copy((STRING)"{", 1L, Name, O_3);
  529.     break;
  530.   case 35:;
  531.     Copy((STRING)"}", 1L, Name, O_3);
  532.     break;
  533.   case 36:;
  534.     Copy((STRING)"->", 2L, Name, O_3);
  535.     break;
  536.   case 37:;
  537.     Copy((STRING)"^", 1L, Name, O_3);
  538.     break;
  539.   case 38:;
  540.     Copy((STRING)":>", 2L, Name, O_3);
  541.     break;
  542.   case 39:;
  543.     Copy((STRING)":=", 2L, Name, O_3);
  544.     break;
  545.   case 40:;
  546.     Copy((STRING)"?", 1L, Name, O_3);
  547.     break;
  548.   case 41:;
  549.     Copy((STRING)"REJECT", 6L, Name, O_3);
  550.     break;
  551.   case 42:;
  552.     Copy((STRING)"FAIL", 4L, Name, O_3);
  553.     break;
  554.   case 43:;
  555.     Copy((STRING)"NL", 2L, Name, O_3);
  556.     break;
  557.   case 44:;
  558.     Copy((STRING)"RETURN", 6L, Name, O_3);
  559.     break;
  560.   case 45:;
  561.     Copy((STRING)"FUNCTION", 8L, Name, O_3);
  562.     break;
  563.   case 46:;
  564.     Copy((STRING)"PREDICATE", 9L, Name, O_3);
  565.     break;
  566.   case 47:;
  567.     Copy((STRING)"HIGH", 4L, Name, O_3);
  568.     break;
  569.   }
  570. }
  571.  
  572. CARDINAL Parser_Parser
  573. # ifdef __STDC__
  574. ()
  575. # else
  576. ()
  577. # endif
  578. {
  579.   yyStateRange yyState;
  580.   yySymbolRange yyTerminal;
  581.   yySymbolRange yyNonterminal;
  582.   yyTableElmt yyStackPtr;
  583.   LONGINT yyStateStackSize;
  584.   LONGINT yyAttrStackSize;
  585.   yyTableElmt yyShortStackSize;
  586.   yyStackType yyStateStack;
  587.   struct S_47 *yyAttributeStack;
  588.   tParsAttribute yySynAttribute;
  589.   Scanner_tScanAttribute yyRepairAttribute;
  590.   yySymbolRange yyRepairToken;
  591.   yyTCombTypePtr yyTCombPtr;
  592.   yyNCombTypePtr yyNCombPtr;
  593.   BOOLEAN yyIsRepairing;
  594.   CARDINAL yyErrorCount;
  595.   struct S_48 yyTokenString;
  596.  
  597.   BeginParser();
  598.   yyState = yyStartState;
  599.   yyTerminal = Scanner_GetToken();
  600.   yyStateStackSize = yyInitStackSize;
  601.   yyAttrStackSize = yyInitStackSize;
  602.   DynArray_MakeArray((ADDRESS *)&yyStateStack, &yyStateStackSize, (LONGINT)sizeof(yyStateRange));
  603.   DynArray_MakeArray((ADDRESS *)&yyAttributeStack, &yyAttrStackSize, (LONGINT)sizeof(tParsAttribute));
  604.   yyShortStackSize = yyStateStackSize - 1;
  605.   yyStackPtr = 0;
  606.   yyErrorCount = 0;
  607.   yyIsRepairing = FALSE;
  608.   for (;;) {
  609.     if (yyStackPtr >= yyShortStackSize) {
  610.       DynArray_ExtendArray((ADDRESS *)&yyStateStack, &yyStateStackSize, (LONGINT)sizeof(yyStateRange));
  611.       DynArray_ExtendArray((ADDRESS *)&yyAttributeStack, &yyAttrStackSize, (LONGINT)sizeof(tParsAttribute));
  612.       yyShortStackSize = yyStateStackSize - 1;
  613.     }
  614.     yyStateStack->A[yyStackPtr] = yyState;
  615.     for (;;) {
  616.       yyTCombPtr = (yyTCombTypePtr)((LONGCARD)yyTBasePtr.A[yyState] + yyTerminal * sizeof(yyTCombType));
  617.       if (yyTCombPtr->Check == yyState) {
  618.         yyState = yyTCombPtr->Next;
  619.         goto EXIT_2;
  620.       }
  621.       yyState = yyDefault.A[yyState];
  622.       if (yyState == yyNoState) {
  623.         yyState = yyStateStack->A[yyStackPtr];
  624.         if (yyIsRepairing) {
  625.           yyRepairToken = yyContinuation.A[yyState];
  626.           yyState = Next(yyState, yyRepairToken);
  627.           if (yyState <= yyLastReadTermState) {
  628.             Scanner_ErrorAttribute((LONGINT)yyRepairToken, &yyRepairAttribute);
  629.             Parser_TokenName((LONGCARD)yyRepairToken, yyTokenString.A, 128L);
  630.             Errors_ErrorMessageI((LONGCARD)Errors_TokenInserted, (LONGCARD)Errors_Repair, Scanner_Attribute.Position, (LONGCARD)Errors_Array, ADR(yyTokenString));
  631.             if (yyState >= yyFirstFinalState) {
  632.               yyState = yyFinalToProd.A[yyState - 160];
  633.             }
  634.             INC(yyStackPtr);
  635.             yyAttributeStack->A[yyStackPtr].U_1.V_1.Scan = yyRepairAttribute;
  636.             yyStateStack->A[yyStackPtr] = yyState;
  637.           }
  638.           if (yyState >= yyFirstFinalState) {
  639.             goto EXIT_2;
  640.           }
  641.         } else {
  642.           INC(yyErrorCount);
  643.           ErrorRecovery(&yyTerminal, yyStateStack, yyStateStackSize, (LONGINT)yyStackPtr);
  644.           yyIsRepairing = TRUE;
  645.         }
  646.       }
  647.     } EXIT_2:;
  648.     if (yyState >= yyFirstFinalState) {
  649.       if (yyState <= yyLastReadTermState) {
  650.         INC(yyStackPtr);
  651.         yyAttributeStack->A[yyStackPtr].U_1.V_1.Scan = Scanner_Attribute;
  652.         yyTerminal = Scanner_GetToken();
  653.         yyIsRepairing = FALSE;
  654.       }
  655.       for (;;) {
  656.         switch (yyState) {
  657.         case 239:;
  658.           DynArray_ReleaseArray((ADDRESS *)&yyStateStack, &yyStateStackSize, (LONGINT)sizeof(yyTableElmt));
  659.           DynArray_ReleaseArray((ADDRESS *)&yyAttributeStack, &yyAttrStackSize, (LONGINT)sizeof(tParsAttribute));
  660.           return yyErrorCount;
  661.           break;
  662.         case 240:;
  663.           DEC1(yyStackPtr, 6);
  664.           yyNonterminal = 54;
  665.           Tree_TreeRoot = Tree_mSpec(yyAttributeStack->A[yyStackPtr + 1].U_1.V_2.TrafoName.Id, yyAttributeStack->A[yyStackPtr + 2].U_1.V_3.TreePart.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_5.PublicPart.Tree, yyAttributeStack->A[yyStackPtr + 4].U_1.V_6.ExternPart0.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_9.Codes.Tree, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 6].U_1.V_10.Routines.Tree));
  666.           break;
  667.         case 241:;
  668.           DEC1(yyStackPtr, 0);
  669.           yyNonterminal = 48;
  670.           Strings_ArrayToString((STRING)"Trafo", 5L, &String1);
  671.           yySynAttribute.U_1.V_2.TrafoName.Id = Idents_MakeIdent(&String1);
  672.           break;
  673.         case 242:;
  674.         case 217:;
  675.           DEC1(yyStackPtr, 2);
  676.           yyNonterminal = 48;
  677.           yySynAttribute.U_1.V_2.TrafoName.Id = yyAttributeStack->A[yyStackPtr + 2].U_1.V_30.Name0.Id;
  678.           break;
  679.         case 243:;
  680.           DEC1(yyStackPtr, 0);
  681.           yyNonterminal = 49;
  682.           Strings_ArrayToString((STRING)"Tree", 4L, &String1);
  683.           yySynAttribute.U_1.V_3.TreePart.Tree = Tree_mTreeName(Idents_MakeIdent(&String1), Scanner_Attribute.Position, Tree_mNoTreeName());
  684.           break;
  685.         case 244:;
  686.           DEC1(yyStackPtr, 2);
  687.           yyNonterminal = 49;
  688.           yySynAttribute.U_1.V_3.TreePart.Tree = Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 2].U_1.V_4.TreeNames.Tree);
  689.           break;
  690.         case 245:;
  691.           DEC1(yyStackPtr, 0);
  692.           yyNonterminal = 56;
  693.           yySynAttribute.U_1.V_4.TreeNames.Tree = Tree_mNoTreeName();
  694.           break;
  695.         case 246:;
  696.         case 162:;
  697.           DEC1(yyStackPtr, 2);
  698.           yyNonterminal = 56;
  699.           yySynAttribute.U_1.V_4.TreeNames.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_4.TreeNames.Tree;
  700.           break;
  701.         case 247:;
  702.         case 218:;
  703.           DEC1(yyStackPtr, 2);
  704.           yyNonterminal = 56;
  705.           yySynAttribute.U_1.V_4.TreeNames.Tree = Tree_mTreeName(yyAttributeStack->A[yyStackPtr + 2].U_1.V_30.Name0.Id, yyAttributeStack->A[yyStackPtr + 2].U_1.V_30.Name0.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_4.TreeNames.Tree);
  706.           break;
  707.         case 248:;
  708.           DEC1(yyStackPtr, 0);
  709.           yyNonterminal = 50;
  710.           yySynAttribute.U_1.V_5.PublicPart.Tree = nNoName;
  711.           break;
  712.         case 249:;
  713.           DEC1(yyStackPtr, 2);
  714.           yyNonterminal = 50;
  715.           yySynAttribute.U_1.V_5.PublicPart.Tree = Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 2].U_1.V_8.Names.Tree);
  716.           break;
  717.         case 250:;
  718.           DEC1(yyStackPtr, 0);
  719.           yyNonterminal = 51;
  720.           yySynAttribute.U_1.V_6.ExternPart0.Tree = nNoName;
  721.           break;
  722.         case 251:;
  723.         case 220:;
  724.           DEC1(yyStackPtr, 3);
  725.           yyNonterminal = 51;
  726.           yySynAttribute.U_1.V_6.ExternPart0.Tree = Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 2].U_1.V_8.Names.Tree);
  727.           break;
  728.         case 252:;
  729.           DEC1(yyStackPtr, 0);
  730.           yyNonterminal = 59;
  731.           yySynAttribute.U_1.V_7.ExternPart.Tree = nNoName;
  732.           break;
  733.         case 253:;
  734.         case 173:;
  735.           DEC1(yyStackPtr, 3);
  736.           yyNonterminal = 59;
  737.           yySynAttribute.U_1.V_7.ExternPart.Tree = Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 2].U_1.V_8.Names.Tree);
  738.           break;
  739.         case 254:;
  740.           DEC1(yyStackPtr, 0);
  741.           yyNonterminal = 57;
  742.           yySynAttribute.U_1.V_8.Names.Tree = nNoName;
  743.           break;
  744.         case 255:;
  745.         case 163:;
  746.           DEC1(yyStackPtr, 2);
  747.           yyNonterminal = 57;
  748.           yySynAttribute.U_1.V_8.Names.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_8.Names.Tree;
  749.           break;
  750.         case 256:;
  751.         case 219:;
  752.           DEC1(yyStackPtr, 2);
  753.           yyNonterminal = 57;
  754.           yySynAttribute.U_1.V_8.Names.Tree = Tree_mName(yyAttributeStack->A[yyStackPtr + 2].U_1.V_30.Name0.Id, yyAttributeStack->A[yyStackPtr + 2].U_1.V_30.Name0.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_8.Names.Tree);
  755.           break;
  756.         case 257:;
  757.           DEC1(yyStackPtr, 0);
  758.           yyNonterminal = 52;
  759.           yySynAttribute.U_1.V_9.Codes.Tree = Tree_MakeTree(Tree_Codes);
  760.           break;
  761.         case 258:;
  762.         case 165:;
  763.           DEC1(yyStackPtr, 3);
  764.           yyNonterminal = 52;
  765.           yySynAttribute.U_1.V_9.Codes.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_9.Codes.Tree;
  766.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.Export = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_4.TargetBlock.Text;
  767.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.ExportLine = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position;
  768.           break;
  769.         case 259:;
  770.         case 166:;
  771.           DEC1(yyStackPtr, 3);
  772.           yyNonterminal = 52;
  773.           yySynAttribute.U_1.V_9.Codes.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_9.Codes.Tree;
  774.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.Import = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_4.TargetBlock.Text;
  775.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.ImportLine = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position;
  776.           break;
  777.         case 260:;
  778.         case 167:;
  779.           DEC1(yyStackPtr, 3);
  780.           yyNonterminal = 52;
  781.           yySynAttribute.U_1.V_9.Codes.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_9.Codes.Tree;
  782.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.Global = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_4.TargetBlock.Text;
  783.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.GlobalLine = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position;
  784.           break;
  785.         case 261:;
  786.         case 168:;
  787.           DEC1(yyStackPtr, 3);
  788.           yyNonterminal = 52;
  789.           yySynAttribute.U_1.V_9.Codes.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_9.Codes.Tree;
  790.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.Begin = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_4.TargetBlock.Text;
  791.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.BeginLine = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position;
  792.           break;
  793.         case 262:;
  794.         case 169:;
  795.           DEC1(yyStackPtr, 3);
  796.           yyNonterminal = 52;
  797.           yySynAttribute.U_1.V_9.Codes.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_9.Codes.Tree;
  798.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.Close = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_4.TargetBlock.Text;
  799.           yySynAttribute.U_1.V_9.Codes.Tree->U_1.V_12.Codes.CloseLine = yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position;
  800.           break;
  801.         case 263:;
  802.           DEC1(yyStackPtr, 0);
  803.           yyNonterminal = 53;
  804.           yySynAttribute.U_1.V_10.Routines.Tree = Tree_mNoRoutine();
  805.           break;
  806.         case 264:;
  807.           DEC1(yyStackPtr, 10);
  808.           yyNonterminal = 53;
  809.           yySynAttribute.U_1.V_10.Routines.Tree = Tree_mProcedure(yyAttributeStack->A[yyStackPtr + 1].U_1.V_10.Routines.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Id, yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Position, yyAttributeStack->A[yyStackPtr + 5].U_1.V_12.Parameters.Tree, yyAttributeStack->A[yyStackPtr + 6].U_1.V_11.OutParameters.Tree, yyAttributeStack->A[yyStackPtr + 8].U_1.V_7.ExternPart.Tree, yyAttributeStack->A[yyStackPtr + 9].U_1.V_16.LocalCode.Text, yyAttributeStack->A[yyStackPtr + 9].U_1.V_16.LocalCode.Position, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 10].U_1.V_17.Rules.Tree));
  810.           break;
  811.         case 265:;
  812.           DEC1(yyStackPtr, 11);
  813.           yyNonterminal = 53;
  814.           yySynAttribute.U_1.V_10.Routines.Tree = Tree_mFunction(yyAttributeStack->A[yyStackPtr + 1].U_1.V_10.Routines.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Id, yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Position, yyAttributeStack->A[yyStackPtr + 5].U_1.V_12.Parameters.Tree, yyAttributeStack->A[yyStackPtr + 6].U_1.V_11.OutParameters.Tree, yyAttributeStack->A[yyStackPtr + 9].U_1.V_7.ExternPart.Tree, yyAttributeStack->A[yyStackPtr + 10].U_1.V_16.LocalCode.Text, yyAttributeStack->A[yyStackPtr + 10].U_1.V_16.LocalCode.Position, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 11].U_1.V_17.Rules.Tree), Tree_mParam(FALSE, Idents_NoIdent, Positions_NoPosition, yyAttributeStack->A[yyStackPtr + 8].U_1.V_15.Type.Tree, nNoParameter));
  815.           break;
  816.         case 266:;
  817.           DEC1(yyStackPtr, 10);
  818.           yyNonterminal = 53;
  819.           yySynAttribute.U_1.V_10.Routines.Tree = Tree_mPredicate(yyAttributeStack->A[yyStackPtr + 1].U_1.V_10.Routines.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Id, yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Position, yyAttributeStack->A[yyStackPtr + 5].U_1.V_12.Parameters.Tree, yyAttributeStack->A[yyStackPtr + 6].U_1.V_11.OutParameters.Tree, yyAttributeStack->A[yyStackPtr + 8].U_1.V_7.ExternPart.Tree, yyAttributeStack->A[yyStackPtr + 9].U_1.V_16.LocalCode.Text, yyAttributeStack->A[yyStackPtr + 9].U_1.V_16.LocalCode.Position, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 10].U_1.V_17.Rules.Tree));
  820.           break;
  821.         case 267:;
  822.           DEC1(yyStackPtr, 0);
  823.           yyNonterminal = 61;
  824.           yySynAttribute.U_1.V_11.OutParameters.Tree = nNoParameter;
  825.           break;
  826.         case 268:;
  827.         case 221:;
  828.           DEC1(yyStackPtr, 2);
  829.           yyNonterminal = 61;
  830.           yySynAttribute.U_1.V_11.OutParameters.Tree = yyAttributeStack->A[yyStackPtr + 2].U_1.V_12.Parameters.Tree;
  831.           break;
  832.         case 269:;
  833.           DEC1(yyStackPtr, 0);
  834.           yyNonterminal = 60;
  835.           yySynAttribute.U_1.V_12.Parameters.Tree = nNoParameter;
  836.           break;
  837.         case 270:;
  838.           DEC1(yyStackPtr, 4);
  839.           yyNonterminal = 60;
  840.           yySynAttribute.U_1.V_12.Parameters.Tree = Tree_mParam(yyAttributeStack->A[yyStackPtr + 1].U_1.V_13.Mode.IsRef, yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 4].U_1.V_15.Type.Tree, nNoParameter);
  841.           break;
  842.         case 271:;
  843.           DEC1(yyStackPtr, 2);
  844.           yyNonterminal = 60;
  845.           Strings_ArrayToString((STRING)"yyP", 3L, &String1);
  846.           INC(NameCount);
  847.           Strings_IntToString(NameCount, &String2);
  848.           Strings_Concatenate(&String1, &String2);
  849.           yySynAttribute.U_1.V_12.Parameters.Tree = Tree_mParam(yyAttributeStack->A[yyStackPtr + 1].U_1.V_13.Mode.IsRef, Idents_MakeIdent(&String1), Positions_NoPosition, yyAttributeStack->A[yyStackPtr + 2].U_1.V_15.Type.Tree, nNoParameter);
  850.           break;
  851.         case 272:;
  852.         case 223:;
  853.           DEC1(yyStackPtr, 6);
  854.           yyNonterminal = 60;
  855.           yySynAttribute.U_1.V_12.Parameters.Tree = Tree_mParam(yyAttributeStack->A[yyStackPtr + 1].U_1.V_13.Mode.IsRef, yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 4].U_1.V_15.Type.Tree, yyAttributeStack->A[yyStackPtr + 6].U_1.V_12.Parameters.Tree);
  856.           break;
  857.         case 273:;
  858.         case 224:;
  859.           DEC1(yyStackPtr, 4);
  860.           yyNonterminal = 60;
  861.           Strings_ArrayToString((STRING)"yyP", 3L, &String1);
  862.           INC(NameCount);
  863.           Strings_IntToString(NameCount, &String2);
  864.           Strings_Concatenate(&String1, &String2);
  865.           yySynAttribute.U_1.V_12.Parameters.Tree = Tree_mParam(yyAttributeStack->A[yyStackPtr + 1].U_1.V_13.Mode.IsRef, Idents_MakeIdent(&String1), Positions_NoPosition, yyAttributeStack->A[yyStackPtr + 2].U_1.V_15.Type.Tree, yyAttributeStack->A[yyStackPtr + 4].U_1.V_12.Parameters.Tree);
  866.           break;
  867.         case 274:;
  868.           DEC1(yyStackPtr, 0);
  869.           yyNonterminal = 65;
  870.           yySynAttribute.U_1.V_13.Mode.IsRef = FALSE;
  871.           break;
  872.         case 275:;
  873.         case 170:;
  874.           DEC1(yyStackPtr, 1);
  875.           yyNonterminal = 65;
  876.           yySynAttribute.U_1.V_13.Mode.IsRef = TRUE;
  877.           break;
  878.         case 276:;
  879.           DEC1(yyStackPtr, 3);
  880.           yyNonterminal = 66;
  881.           yySynAttribute.U_1.V_14.Declarations.Tree = Tree_mParam(FALSE, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 3].U_1.V_15.Type.Tree, nNoParameter);
  882.           break;
  883.         case 277:;
  884.         case 236:;
  885.           DEC1(yyStackPtr, 5);
  886.           yyNonterminal = 66;
  887.           yySynAttribute.U_1.V_14.Declarations.Tree = Tree_mParam(FALSE, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 3].U_1.V_15.Type.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_14.Declarations.Tree);
  888.           break;
  889.         case 278:;
  890.           DEC1(yyStackPtr, 1);
  891.           yyNonterminal = 64;
  892.           yySynAttribute.U_1.V_15.Type.Tree = Tree_mType(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, nNoName);
  893.           break;
  894.         case 279:;
  895.         case 222:;
  896.           DEC1(yyStackPtr, 3);
  897.           yyNonterminal = 64;
  898.           yySynAttribute.U_1.V_15.Type.Tree = Tree_mType(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, Tree_mName(yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Id, yyAttributeStack->A[yyStackPtr + 3].U_1.V_30.Name0.Position, nNoName));
  899.           break;
  900.         case 280:;
  901.         case 172:;
  902.           DEC1(yyStackPtr, 3);
  903.           yyNonterminal = 64;
  904.           yySynAttribute.U_1.V_15.Type.Tree = Tree_mType(Idents_NoIdent, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 2].U_1.V_8.Names.Tree));
  905.           break;
  906.         case 281:;
  907.         case 171:;
  908.           DEC1(yyStackPtr, 5);
  909.           yyNonterminal = 64;
  910.           yySynAttribute.U_1.V_15.Type.Tree = Tree_mType(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 4].U_1.V_8.Names.Tree));
  911.           break;
  912.         case 282:;
  913.           DEC1(yyStackPtr, 0);
  914.           yyNonterminal = 62;
  915.           Texts_MakeText(&yySynAttribute.U_1.V_16.LocalCode.Text);
  916.           yySynAttribute.U_1.V_16.LocalCode.Position = Positions_NoPosition;
  917.           break;
  918.         case 283:;
  919.         case 174:;
  920.           DEC1(yyStackPtr, 2);
  921.           yyNonterminal = 62;
  922.           yySynAttribute.U_1.V_16.LocalCode.Position = yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position;
  923.           yySynAttribute.U_1.V_16.LocalCode.Text = yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_4.TargetBlock.Text;
  924.           break;
  925.         case 284:;
  926.           DEC1(yyStackPtr, 0);
  927.           yyNonterminal = 63;
  928.           yySynAttribute.U_1.V_17.Rules.Tree = nNoRule;
  929.           break;
  930.         case 285:;
  931.         case 197:;
  932.           DEC1(yyStackPtr, 4);
  933.           yyNonterminal = 63;
  934.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_19.Patterns2.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 4].U_1.V_1.Scan.Position), Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 4].U_1.V_1.Scan.Position), nNoStatement, yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  935.           break;
  936.         case 286:;
  937.         case 211:;
  938.           DEC1(yyStackPtr, 6);
  939.           yyNonterminal = 63;
  940.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 6].U_1.V_1.Scan.Position), Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 6].U_1.V_1.Scan.Position), Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 5].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  941.           break;
  942.         case 287:;
  943.         case 198:;
  944.           DEC1(yyStackPtr, 6);
  945.           yyNonterminal = 63;
  946.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_22.Exprs2.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 6].U_1.V_1.Scan.Position), nNoStatement, yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  947.           break;
  948.         case 288:;
  949.         case 215:;
  950.           DEC1(yyStackPtr, 7);
  951.           yyNonterminal = 63;
  952.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 7].U_1.V_1.Scan.Position), yyAttributeStack->A[yyStackPtr + 5].U_1.V_24.Expr.Tree, nNoStatement, yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  953.           break;
  954.         case 289:;
  955.         case 200:;
  956.           DEC1(yyStackPtr, 8);
  957.           yyNonterminal = 63;
  958.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_20.Exprs.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 8].U_1.V_1.Scan.Position), Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 7].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  959.           break;
  960.         case 290:;
  961.         case 212:;
  962.           DEC1(yyStackPtr, 8);
  963.           yyNonterminal = 63;
  964.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, yyAttributeStack->A[yyStackPtr + 7].U_1.V_22.Exprs2.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 8].U_1.V_1.Scan.Position), Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 5].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  965.           break;
  966.         case 291:;
  967.         case 209:;
  968.           DEC1(yyStackPtr, 9);
  969.           yyNonterminal = 63;
  970.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_20.Exprs.Tree, yyAttributeStack->A[yyStackPtr + 7].U_1.V_24.Expr.Tree, nNoStatement, yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  971.           break;
  972.         case 292:;
  973.         case 216:;
  974.           DEC1(yyStackPtr, 9);
  975.           yyNonterminal = 63;
  976.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 9].U_1.V_1.Scan.Position), yyAttributeStack->A[yyStackPtr + 5].U_1.V_24.Expr.Tree, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 8].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  977.           break;
  978.         case 293:;
  979.         case 214:;
  980.           DEC1(yyStackPtr, 9);
  981.           yyNonterminal = 63;
  982.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, Tree_mNoExpr(yyAttributeStack->A[yyStackPtr + 9].U_1.V_1.Scan.Position), yyAttributeStack->A[yyStackPtr + 7].U_1.V_24.Expr.Tree, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 5].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  983.           break;
  984.         case 294:;
  985.         case 210:;
  986.           DEC1(yyStackPtr, 11);
  987.           yyNonterminal = 63;
  988.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_20.Exprs.Tree, yyAttributeStack->A[yyStackPtr + 7].U_1.V_24.Expr.Tree, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 10].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  989.           break;
  990.         case 295:;
  991.         case 205:;
  992.           DEC1(yyStackPtr, 11);
  993.           yyNonterminal = 63;
  994.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_20.Exprs.Tree, yyAttributeStack->A[yyStackPtr + 9].U_1.V_24.Expr.Tree, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 7].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  995.           break;
  996.         case 296:;
  997.         case 213:;
  998.           DEC1(yyStackPtr, 11);
  999.           yyNonterminal = 63;
  1000.           yySynAttribute.U_1.V_17.Rules.Tree = mRules(Line, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree, yyAttributeStack->A[yyStackPtr + 7].U_1.V_20.Exprs.Tree, yyAttributeStack->A[yyStackPtr + 9].U_1.V_24.Expr.Tree, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 5].U_1.V_28.Statements.Tree), yyAttributeStack->A[yyStackPtr + 1].U_1.V_17.Rules.Tree);
  1001.           break;
  1002.         case 297:;
  1003.           DEC1(yyStackPtr, 0);
  1004.           yyNonterminal = 67;
  1005.           Line = Scanner_Attribute.Position;
  1006.           break;
  1007.         case 298:;
  1008.           DEC1(yyStackPtr, 0);
  1009.           yyNonterminal = 58;
  1010.           break;
  1011.         case 299:;
  1012.         case 164:;
  1013.           DEC1(yyStackPtr, 1);
  1014.           yyNonterminal = 58;
  1015.           break;
  1016.         case 300:;
  1017.           DEC1(yyStackPtr, 1);
  1018.           yyNonterminal = 69;
  1019.           yySynAttribute.U_1.V_18.Patterns.Tree = Tree_mOnePatternsList(yyAttributeStack->A[yyStackPtr + 1].U_1.V_20.Exprs.Tree, nNoPatternsList);
  1020.           break;
  1021.         case 301:;
  1022.         case 238:;
  1023.           DEC1(yyStackPtr, 3);
  1024.           yyNonterminal = 69;
  1025.           yySynAttribute.U_1.V_18.Patterns.Tree = Tree_mOnePatternsList(yyAttributeStack->A[yyStackPtr + 1].U_1.V_20.Exprs.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_18.Patterns.Tree);
  1026.           break;
  1027.         case 302:;
  1028.           DEC1(yyStackPtr, 2);
  1029.           yyNonterminal = 68;
  1030.           yySynAttribute.U_1.V_19.Patterns2.Tree = Tree_mOnePatternsList(yyAttributeStack->A[yyStackPtr + 1].U_1.V_20.Exprs.Tree, nNoPatternsList);
  1031.           break;
  1032.         case 303:;
  1033.         case 237:;
  1034.           DEC1(yyStackPtr, 3);
  1035.           yyNonterminal = 68;
  1036.           yySynAttribute.U_1.V_19.Patterns2.Tree = Tree_mOnePatternsList(yyAttributeStack->A[yyStackPtr + 1].U_1.V_20.Exprs.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_19.Patterns2.Tree);
  1037.           break;
  1038.         case 304:;
  1039.           DEC1(yyStackPtr, 1);
  1040.           yyNonterminal = 73;
  1041.           yySynAttribute.U_1.V_20.Exprs.Tree = Tree_mOneExpr(Tree_mDontCare(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position), Tree_mNoExpr(Scanner_Attribute.Position));
  1042.           break;
  1043.         case 305:;
  1044.         case 190:;
  1045.           DEC1(yyStackPtr, 2);
  1046.           yyNonterminal = 73;
  1047.           yySynAttribute.U_1.V_20.Exprs.Tree = Tree_mOneExpr(Tree_mDontCare(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position), Tree_mNoExpr(Scanner_Attribute.Position));
  1048.           break;
  1049.         case 306:;
  1050.           DEC1(yyStackPtr, 1);
  1051.           yyNonterminal = 73;
  1052.           yySynAttribute.U_1.V_20.Exprs.Tree = Tree_mOneExpr(yyAttributeStack->A[yyStackPtr + 1].U_1.V_24.Expr.Tree, Tree_mNoExpr(Scanner_Attribute.Position));
  1053.           break;
  1054.         case 307:;
  1055.         case 228:;
  1056.           DEC1(yyStackPtr, 3);
  1057.           yyNonterminal = 73;
  1058.           yySynAttribute.U_1.V_20.Exprs.Tree = Tree_mOneExpr(yyAttributeStack->A[yyStackPtr + 1].U_1.V_24.Expr.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_20.Exprs.Tree);
  1059.           break;
  1060.         case 308:;
  1061.         case 229:;
  1062.           DEC1(yyStackPtr, 1);
  1063.           yyNonterminal = 73;
  1064.           yySynAttribute.U_1.V_20.Exprs.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_21.NamedExprs.Tree;
  1065.           break;
  1066.         case 309:;
  1067.           DEC1(yyStackPtr, 0);
  1068.           yyNonterminal = 74;
  1069.           yySynAttribute.U_1.V_21.NamedExprs.Tree = Tree_mNoExpr(Scanner_Attribute.Position);
  1070.           break;
  1071.         case 310:;
  1072.           DEC1(yyStackPtr, 3);
  1073.           yyNonterminal = 74;
  1074.           yySynAttribute.U_1.V_21.NamedExprs.Tree = Tree_mNamedExpr(yyAttributeStack->A[yyStackPtr + 3].U_1.V_24.Expr.Tree, Tree_mNoExpr(Scanner_Attribute.Position), yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident);
  1075.           break;
  1076.         case 311:;
  1077.         case 232:;
  1078.           DEC1(yyStackPtr, 5);
  1079.           yyNonterminal = 74;
  1080.           yySynAttribute.U_1.V_21.NamedExprs.Tree = Tree_mNamedExpr(yyAttributeStack->A[yyStackPtr + 3].U_1.V_24.Expr.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_21.NamedExprs.Tree, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident);
  1081.           break;
  1082.         case 312:;
  1083.           DEC1(yyStackPtr, 1);
  1084.           yyNonterminal = 71;
  1085.           yySynAttribute.U_1.V_22.Exprs2.Tree = Tree_mOneExpr(Tree_mDontCare(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position), Tree_mNoExpr(Scanner_Attribute.Position));
  1086.           break;
  1087.         case 313:;
  1088.           DEC1(yyStackPtr, 2);
  1089.           yyNonterminal = 71;
  1090.           yySynAttribute.U_1.V_22.Exprs2.Tree = Tree_mOneExpr(Tree_mDontCare(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position), Tree_mNoExpr(Scanner_Attribute.Position));
  1091.           break;
  1092.         case 314:;
  1093.         case 234:;
  1094.           DEC1(yyStackPtr, 3);
  1095.           yyNonterminal = 71;
  1096.           yySynAttribute.U_1.V_22.Exprs2.Tree = Tree_mOneExpr(yyAttributeStack->A[yyStackPtr + 1].U_1.V_24.Expr.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_22.Exprs2.Tree);
  1097.           break;
  1098.         case 315:;
  1099.         case 235:;
  1100.           DEC1(yyStackPtr, 1);
  1101.           yyNonterminal = 71;
  1102.           yySynAttribute.U_1.V_22.Exprs2.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_23.NamedExprs2.Tree;
  1103.           break;
  1104.         case 316:;
  1105.           DEC1(yyStackPtr, 0);
  1106.           yyNonterminal = 75;
  1107.           yySynAttribute.U_1.V_23.NamedExprs2.Tree = Tree_mNoExpr(Scanner_Attribute.Position);
  1108.           break;
  1109.         case 317:;
  1110.         case 233:;
  1111.           DEC1(yyStackPtr, 5);
  1112.           yyNonterminal = 75;
  1113.           yySynAttribute.U_1.V_23.NamedExprs2.Tree = Tree_mNamedExpr(yyAttributeStack->A[yyStackPtr + 3].U_1.V_24.Expr.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_23.NamedExprs2.Tree, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident);
  1114.           break;
  1115.         case 318:;
  1116.         case 230:;
  1117.           DEC1(yyStackPtr, 1);
  1118.           yyNonterminal = 72;
  1119.           yySynAttribute.U_1.V_24.Expr.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_25.PrefixExpr.Tree;
  1120.           break;
  1121.         case 319:;
  1122.         case 226:;
  1123.           DEC1(yyStackPtr, 3);
  1124.           yyNonterminal = 72;
  1125.           yySynAttribute.U_1.V_24.Expr.Tree = Tree_mBinary(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_24.Expr.Tree, yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_2.Operator.Ident, yyAttributeStack->A[yyStackPtr + 3].U_1.V_25.PrefixExpr.Tree);
  1126.           break;
  1127.         case 320:;
  1128.           DEC1(yyStackPtr, 1);
  1129.           yyNonterminal = 76;
  1130.           yySynAttribute.U_1.V_25.PrefixExpr.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree;
  1131.           break;
  1132.         case 321:;
  1133.           DEC1(yyStackPtr, 3);
  1134.           yyNonterminal = 76;
  1135.           yySynAttribute.U_1.V_25.PrefixExpr.Tree = yyAttributeStack->A[yyStackPtr + 3].U_1.V_26.PostfixExpr.Tree;
  1136.           if (yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_1.Kind == Tree_Compose) {
  1137.             yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_61.Compose.Selector = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident;
  1138.           } else if (yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_1.Kind == Tree_Nil) {
  1139.             yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_64.Nil.Selector = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident;
  1140.           } else if (yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_1.Kind == Tree_VarUse) {
  1141.             yySynAttribute.U_1.V_25.PrefixExpr.Tree = Tree_mCompose(yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_62.VarUse.Pos, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yySynAttribute.U_1.V_25.PrefixExpr.Tree, Tree_mOneExpr(Tree_mDontCare(yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_62.VarUse.Pos), Tree_mNoExpr(yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_62.VarUse.Pos)), FALSE);
  1142.           } else {
  1143.             Scanner_Warning((STRING)"label ignored", 13L, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position);
  1144.           }
  1145.           break;
  1146.         case 322:;
  1147.           DEC1(yyStackPtr, 3);
  1148.           yyNonterminal = 76;
  1149.           yySynAttribute.U_1.V_25.PrefixExpr.Tree = yyAttributeStack->A[yyStackPtr + 3].U_1.V_26.PostfixExpr.Tree;
  1150.           if (yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_1.Kind == Tree_Compose) {
  1151.             yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_61.Compose.Selector = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident;
  1152.             yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_61.Compose.Widen = TRUE;
  1153.           } else if (yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_1.Kind == Tree_Nil) {
  1154.             yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_64.Nil.Selector = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident;
  1155.           } else if (yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_1.Kind == Tree_VarUse) {
  1156.             yySynAttribute.U_1.V_25.PrefixExpr.Tree = Tree_mCompose(yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_62.VarUse.Pos, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yySynAttribute.U_1.V_25.PrefixExpr.Tree, Tree_mOneExpr(Tree_mDontCare(yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_62.VarUse.Pos), Tree_mNoExpr(yySynAttribute.U_1.V_25.PrefixExpr.Tree->U_1.V_62.VarUse.Pos)), TRUE);
  1157.           } else {
  1158.             Scanner_Warning((STRING)"label ignored", 13L, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position);
  1159.           }
  1160.           break;
  1161.         case 323:;
  1162.         case 231:;
  1163.           DEC1(yyStackPtr, 2);
  1164.           yyNonterminal = 76;
  1165.           yySynAttribute.U_1.V_25.PrefixExpr.Tree = Tree_mPreOperator(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_2.Operator.Ident, yyAttributeStack->A[yyStackPtr + 2].U_1.V_25.PrefixExpr.Tree);
  1166.           break;
  1167.         case 324:;
  1168.         case 225:;
  1169.           DEC1(yyStackPtr, 2);
  1170.           yyNonterminal = 76;
  1171.           yySynAttribute.U_1.V_25.PrefixExpr.Tree = Tree_mPreOperator(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_3.IncOperator.Ident, yyAttributeStack->A[yyStackPtr + 2].U_1.V_25.PrefixExpr.Tree);
  1172.           break;
  1173.         case 325:;
  1174.         case 227:;
  1175.           DEC1(yyStackPtr, 1);
  1176.           yyNonterminal = 77;
  1177.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_27.PrimaryExpr.Tree;
  1178.           break;
  1179.         case 326:;
  1180.         case 191:;
  1181.           DEC1(yyStackPtr, 4);
  1182.           yyNonterminal = 77;
  1183.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = Tree_mIndex(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_20.Exprs.Tree);
  1184.           break;
  1185.         case 327:;
  1186.         case 195:;
  1187.           DEC1(yyStackPtr, 4);
  1188.           yyNonterminal = 77;
  1189.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = Tree_mCompose(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, Idents_NoIdent, yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_20.Exprs.Tree, FALSE);
  1190.           break;
  1191.         case 328:;
  1192.         case 194:;
  1193.           DEC1(yyStackPtr, 6);
  1194.           yyNonterminal = 77;
  1195.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = Tree_mCall(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree, yyAttributeStack->A[yyStackPtr + 3].U_1.V_20.Exprs.Tree, yyAttributeStack->A[yyStackPtr + 5].U_1.V_20.Exprs.Tree);
  1196.           break;
  1197.         case 329:;
  1198.         case 189:;
  1199.           DEC1(yyStackPtr, 3);
  1200.           yyNonterminal = 77;
  1201.           Strings_ArrayToString((STRING)".", 1L, &String1);
  1202.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = Tree_mBinary(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree, Idents_MakeIdent(&String1), Tree_mVarUse(yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_1.Ident.Ident));
  1203.           break;
  1204.         case 330:;
  1205.         case 192:;
  1206.           DEC1(yyStackPtr, 3);
  1207.           yyNonterminal = 77;
  1208.           Strings_ArrayToString((STRING)"->", 2L, &String1);
  1209.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = Tree_mBinary(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree, Idents_MakeIdent(&String1), Tree_mVarUse(yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_1.Ident.Ident));
  1210.           break;
  1211.         case 331:;
  1212.         case 193:;
  1213.           DEC1(yyStackPtr, 2);
  1214.           yyNonterminal = 77;
  1215.           Strings_ArrayToString((STRING)"^", 1L, &String1);
  1216.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = Tree_mPostOperator(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, Idents_MakeIdent(&String1), yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree);
  1217.           break;
  1218.         case 332:;
  1219.         case 188:;
  1220.           DEC1(yyStackPtr, 2);
  1221.           yyNonterminal = 77;
  1222.           yySynAttribute.U_1.V_26.PostfixExpr.Tree = Tree_mPostOperator(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_3.IncOperator.Ident, yyAttributeStack->A[yyStackPtr + 1].U_1.V_26.PostfixExpr.Tree);
  1223.           break;
  1224.         case 333:;
  1225.           DEC1(yyStackPtr, 1);
  1226.           yyNonterminal = 78;
  1227.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mVarUse(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident);
  1228.           break;
  1229.         case 334:;
  1230.         case 178:;
  1231.           DEC1(yyStackPtr, 1);
  1232.           yyNonterminal = 78;
  1233.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mNil(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, Idents_NoIdent);
  1234.           break;
  1235.         case 335:;
  1236.         case 179:;
  1237.           DEC1(yyStackPtr, 1);
  1238.           yyNonterminal = 78;
  1239.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mDontCare1(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position);
  1240.           break;
  1241.         case 336:;
  1242.         case 177:;
  1243.           DEC1(yyStackPtr, 1);
  1244.           yyNonterminal = 78;
  1245.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mTargetExpr(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, Tree_mAny(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_6.Number.StringRef, nNoDesignator));
  1246.           break;
  1247.         case 337:;
  1248.         case 176:;
  1249.           DEC1(yyStackPtr, 1);
  1250.           yyNonterminal = 78;
  1251.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mStringExpr(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_5.String.StringRef);
  1252.           break;
  1253.         case 338:;
  1254.         case 175:;
  1255.           DEC1(yyStackPtr, 3);
  1256.           yyNonterminal = 78;
  1257.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mAttrDesc(yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.U_1.V_1.Ident.Ident);
  1258.           break;
  1259.         case 339:;
  1260.         case 185:;
  1261.           DEC1(yyStackPtr, 3);
  1262.           yyNonterminal = 78;
  1263.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mTargetExpr(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 2].U_1.V_29.TargetCodes.Tree));
  1264.           break;
  1265.         case 340:;
  1266.         case 196:;
  1267.           DEC1(yyStackPtr, 3);
  1268.           yyNonterminal = 78;
  1269.           yySynAttribute.U_1.V_27.PrimaryExpr.Tree = Tree_mParents(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 2].U_1.V_24.Expr.Tree);
  1270.           break;
  1271.         case 341:;
  1272.           DEC1(yyStackPtr, 0);
  1273.           yyNonterminal = 70;
  1274.           yySynAttribute.U_1.V_28.Statements.Tree = nNoStatement;
  1275.           break;
  1276.         case 342:;
  1277.         case 207:;
  1278.           DEC1(yyStackPtr, 3);
  1279.           yyNonterminal = 70;
  1280.           yySynAttribute.U_1.V_28.Statements.Tree = Tree_mProcCall(yyAttributeStack->A[yyStackPtr + 2].U_1.V_24.Expr.Tree->U_1.V_60.Expr.Pos, yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree, yyAttributeStack->A[yyStackPtr + 2].U_1.V_24.Expr.Tree);
  1281.           break;
  1282.         case 343:;
  1283.         case 208:;
  1284.           DEC1(yyStackPtr, 5);
  1285.           yyNonterminal = 70;
  1286.           yySynAttribute.U_1.V_28.Statements.Tree = Tree_mAssignment(yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree, yyAttributeStack->A[yyStackPtr + 2].U_1.V_24.Expr.Tree, yyAttributeStack->A[yyStackPtr + 4].U_1.V_24.Expr.Tree);
  1287.           break;
  1288.         case 344:;
  1289.         case 202:;
  1290.           DEC1(yyStackPtr, 2);
  1291.           yyNonterminal = 70;
  1292.           yySynAttribute.U_1.V_28.Statements.Tree = Tree_mReject(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree);
  1293.           break;
  1294.         case 345:;
  1295.         case 203:;
  1296.           DEC1(yyStackPtr, 2);
  1297.           yyNonterminal = 70;
  1298.           yySynAttribute.U_1.V_28.Statements.Tree = Tree_mFail(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree);
  1299.           break;
  1300.         case 346:;
  1301.         case 206:;
  1302.           DEC1(yyStackPtr, 3);
  1303.           yyNonterminal = 70;
  1304.           yySynAttribute.U_1.V_28.Statements.Tree = Tree_mTargetStmt(yyAttributeStack->A[yyStackPtr + 3].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree, yyAttributeStack->A[yyStackPtr + 2].U_1.V_14.Declarations.Tree, nNoDesignator);
  1305.           break;
  1306.         case 347:;
  1307.         case 201:;
  1308.           DEC1(yyStackPtr, 5);
  1309.           yyNonterminal = 70;
  1310.           yySynAttribute.U_1.V_28.Statements.Tree = Tree_mTargetStmt(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree, nNoParameter, Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 3].U_1.V_29.TargetCodes.Tree));
  1311.           break;
  1312.         case 348:;
  1313.         case 204:;
  1314.           DEC1(yyStackPtr, 2);
  1315.           yyNonterminal = 70;
  1316.           yySynAttribute.U_1.V_28.Statements.Tree = Tree_mNl(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree);
  1317.           break;
  1318.         case 349:;
  1319.         case 199:;
  1320.           DEC1(yyStackPtr, 2);
  1321.           yyNonterminal = 70;
  1322.           yySynAttribute.U_1.V_28.Statements.Tree = yyAttributeStack->A[yyStackPtr + 1].U_1.V_28.Statements.Tree;
  1323.           break;
  1324.         case 350:;
  1325.           DEC1(yyStackPtr, 0);
  1326.           yyNonterminal = 79;
  1327.           yySynAttribute.U_1.V_29.TargetCodes.Tree = nNoDesignator;
  1328.           break;
  1329.         case 351:;
  1330.         case 187:;
  1331.           DEC1(yyStackPtr, 6);
  1332.           yyNonterminal = 79;
  1333.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mDesignator(yyAttributeStack->A[yyStackPtr + 2].U_1.V_31.Name1.Id, yyAttributeStack->A[yyStackPtr + 6].U_1.V_1.Scan.U_1.V_1.Ident.Ident, yyAttributeStack->A[yyStackPtr + 2].U_1.V_31.Name1.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_29.TargetCodes.Tree);
  1334.           break;
  1335.         case 352:;
  1336.           DEC1(yyStackPtr, 5);
  1337.           yyNonterminal = 79;
  1338.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mIdent(yyAttributeStack->A[yyStackPtr + 2].U_1.V_31.Name1.Id, yyAttributeStack->A[yyStackPtr + 2].U_1.V_31.Name1.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_29.TargetCodes.Tree);
  1339.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mAnys(Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 3].U_1.V_32.Space.Tree), yySynAttribute.U_1.V_29.TargetCodes.Tree);
  1340.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mAny(yyAttributeStack->A[yyStackPtr + 4].U_1.V_1.Scan.U_1.V_9.yy9.StringRef, yySynAttribute.U_1.V_29.TargetCodes.Tree);
  1341.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mAnys(Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 5].U_1.V_32.Space.Tree), yySynAttribute.U_1.V_29.TargetCodes.Tree);
  1342.           break;
  1343.         case 353:;
  1344.           DEC1(yyStackPtr, 3);
  1345.           yyNonterminal = 79;
  1346.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mIdent(yyAttributeStack->A[yyStackPtr + 2].U_1.V_31.Name1.Id, yyAttributeStack->A[yyStackPtr + 2].U_1.V_31.Name1.Position, yyAttributeStack->A[yyStackPtr + 1].U_1.V_29.TargetCodes.Tree);
  1347.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mAnys(Tree_ReverseTree(yyAttributeStack->A[yyStackPtr + 3].U_1.V_32.Space.Tree), yySynAttribute.U_1.V_29.TargetCodes.Tree);
  1348.           break;
  1349.         case 354:;
  1350.         case 184:;
  1351.           DEC1(yyStackPtr, 2);
  1352.           yyNonterminal = 79;
  1353.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mAny(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_9.yy9.StringRef, yyAttributeStack->A[yyStackPtr + 1].U_1.V_29.TargetCodes.Tree);
  1354.           break;
  1355.         case 355:;
  1356.         case 182:;
  1357.           DEC1(yyStackPtr, 2);
  1358.           yyNonterminal = 79;
  1359.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mAny(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_7.TargetCode.StringRef, yyAttributeStack->A[yyStackPtr + 1].U_1.V_29.TargetCodes.Tree);
  1360.           break;
  1361.         case 356:;
  1362.         case 183:;
  1363.           DEC1(yyStackPtr, 2);
  1364.           yyNonterminal = 79;
  1365.           yySynAttribute.U_1.V_29.TargetCodes.Tree = Tree_mAny(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_8.WhiteSpace.StringRef, yyAttributeStack->A[yyStackPtr + 1].U_1.V_29.TargetCodes.Tree);
  1366.           break;
  1367.         case 357:;
  1368.         case 160:;
  1369.           DEC1(yyStackPtr, 1);
  1370.           yyNonterminal = 55;
  1371.           yySynAttribute.U_1.V_30.Name0.Id = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident;
  1372.           yySynAttribute.U_1.V_30.Name0.Position = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position;
  1373.           break;
  1374.         case 358:;
  1375.         case 161:;
  1376.           DEC1(yyStackPtr, 1);
  1377.           yyNonterminal = 55;
  1378.           StringMem_GetString(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_5.String.StringRef, &String1);
  1379.           Strings_SubString(&String1, 2, (Strings_tStringIndex)(Strings_Length(&String1) - 1), &String2);
  1380.           yySynAttribute.U_1.V_30.Name0.Id = Idents_MakeIdent(&String2);
  1381.           yySynAttribute.U_1.V_30.Name0.Position = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position;
  1382.           break;
  1383.         case 359:;
  1384.         case 180:;
  1385.           DEC1(yyStackPtr, 1);
  1386.           yyNonterminal = 80;
  1387.           yySynAttribute.U_1.V_31.Name1.Id = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_1.Ident.Ident;
  1388.           yySynAttribute.U_1.V_31.Name1.Position = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position;
  1389.           break;
  1390.         case 360:;
  1391.         case 181:;
  1392.           DEC1(yyStackPtr, 1);
  1393.           yyNonterminal = 80;
  1394.           StringMem_GetString(yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.U_1.V_5.String.StringRef, &String1);
  1395.           yySynAttribute.U_1.V_31.Name1.Id = Idents_MakeIdent(&String1);
  1396.           yySynAttribute.U_1.V_31.Name1.Position = yyAttributeStack->A[yyStackPtr + 1].U_1.V_1.Scan.Position;
  1397.           break;
  1398.         case 361:;
  1399.           DEC1(yyStackPtr, 0);
  1400.           yyNonterminal = 81;
  1401.           yySynAttribute.U_1.V_32.Space.Tree = nNoLayout;
  1402.           break;
  1403.         case 362:;
  1404.         case 186:;
  1405.           DEC1(yyStackPtr, 2);
  1406.           yyNonterminal = 81;
  1407.           yySynAttribute.U_1.V_32.Space.Tree = Tree_mLayoutAny(yyAttributeStack->A[yyStackPtr + 2].U_1.V_1.Scan.U_1.V_8.WhiteSpace.StringRef, yyAttributeStack->A[yyStackPtr + 1].U_1.V_32.Space.Tree);
  1408.           break;
  1409.         }
  1410.         yyNCombPtr = (yyNCombTypePtr)((LONGCARD)yyNBasePtr.A[yyStateStack->A[yyStackPtr]] + yyNonterminal * sizeof(yyNCombType));
  1411.         yyState = *yyNCombPtr;
  1412.         INC(yyStackPtr);
  1413.         yyAttributeStack->A[yyStackPtr] = yySynAttribute;
  1414.         if (yyState < yyFirstFinalState) {
  1415.           goto EXIT_3;
  1416.         }
  1417.       } EXIT_3:;
  1418.     } else {
  1419.       INC(yyStackPtr);
  1420.       yyAttributeStack->A[yyStackPtr].U_1.V_1.Scan = Scanner_Attribute;
  1421.       yyTerminal = Scanner_GetToken();
  1422.       yyIsRepairing = FALSE;
  1423.     }
  1424.   } EXIT_1:;
  1425. }
  1426.  
  1427. static void ErrorRecovery
  1428. # ifdef __STDC__
  1429. (yySymbolRange *Terminal, yyStackType StateStack, LONGINT StackSize, LONGINT StackPtr)
  1430. # else
  1431. (Terminal, StateStack, StackSize, StackPtr)
  1432. yySymbolRange *Terminal;
  1433. yyStackType StateStack;
  1434. LONGINT StackSize;
  1435. LONGINT StackPtr;
  1436. # endif
  1437. {
  1438.   BOOLEAN TokensSkipped;
  1439.   Sets_tSet ContinueSet;
  1440.   Sets_tSet RestartSet;
  1441.   yySymbolRange Token;
  1442.   struct S_49 TokenArray;
  1443.   Strings_tString TokenString;
  1444.   Strings_tString ContinueString;
  1445.  
  1446.   Errors_ErrorMessage((LONGCARD)Errors_SyntaxError, (LONGCARD)Errors_Error, Scanner_Attribute.Position);
  1447.   Sets_MakeSet(&ContinueSet, (LONGCARD)yyLastTerminal);
  1448.   ComputeContinuation(StateStack, StackSize, StackPtr, &ContinueSet);
  1449.   Strings_AssignEmpty(&ContinueString);
  1450.   {
  1451.     yySymbolRange B_3 = Sets_Minimum(&ContinueSet), B_4 = Sets_Maximum(&ContinueSet);
  1452.  
  1453.     if (B_3 <= B_4)
  1454.       for (Token = B_3;; Token += 1) {
  1455.         if (Sets_IsElement((LONGCARD)Token, &ContinueSet)) {
  1456.           Parser_TokenName((LONGCARD)Token, TokenArray.A, 128L);
  1457.           Strings_ArrayToString(TokenArray.A, 128L, &TokenString);
  1458.           if (Strings_Length(&ContinueString) + Strings_Length(&TokenString) + 1 <= Strings_cMaxStrLength) {
  1459.             Strings_Concatenate(&ContinueString, &TokenString);
  1460.             Strings_Append(&ContinueString, ' ');
  1461.           }
  1462.         }
  1463.         if (Token >= B_4) break;
  1464.       }
  1465.   }
  1466.   Errors_ErrorMessageI((LONGCARD)Errors_ExpectedTokens, (LONGCARD)Errors_Information, Scanner_Attribute.Position, (LONGCARD)Errors_String, ADR(ContinueString));
  1467.   Sets_ReleaseSet(&ContinueSet);
  1468.   Sets_MakeSet(&RestartSet, (LONGCARD)yyLastTerminal);
  1469.   ComputeRestartPoints(StateStack, StackSize, StackPtr, &RestartSet);
  1470.   TokensSkipped = FALSE;
  1471.   while (!Sets_IsElement((LONGCARD)(*Terminal), &RestartSet)) {
  1472.     *Terminal = Scanner_GetToken();
  1473.     TokensSkipped = TRUE;
  1474.   }
  1475.   Sets_ReleaseSet(&RestartSet);
  1476.   if (TokensSkipped) {
  1477.     Errors_ErrorMessage((LONGCARD)Errors_RestartPoint, (LONGCARD)Errors_Information, Scanner_Attribute.Position);
  1478.   }
  1479. }
  1480.  
  1481. static void ComputeContinuation
  1482. # ifdef __STDC__
  1483. (yyStackType Stack, LONGINT StackSize, LONGINT StackPtr, Sets_tSet *ContinueSet)
  1484. # else
  1485. (Stack, StackSize, StackPtr, ContinueSet)
  1486. yyStackType Stack;
  1487. LONGINT StackSize;
  1488. LONGINT StackPtr;
  1489. Sets_tSet *ContinueSet;
  1490. # endif
  1491. {
  1492.   yySymbolRange Terminal;
  1493.  
  1494.   Sets_AssignEmpty(ContinueSet);
  1495.   for (Terminal = yyFirstTerminal; Terminal <= yyLastTerminal; Terminal += 1) {
  1496.     if (IsContinuation(Terminal, Stack, StackSize, StackPtr)) {
  1497.       Sets_Include(ContinueSet, (LONGCARD)Terminal);
  1498.     }
  1499.   }
  1500. }
  1501.  
  1502. static BOOLEAN IsContinuation
  1503. # ifdef __STDC__
  1504. (yySymbolRange Terminal, yyStackType ParseStack, LONGINT StackSize, LONGINT StackPtr)
  1505. # else
  1506. (Terminal, ParseStack, StackSize, StackPtr)
  1507. yySymbolRange Terminal;
  1508. yyStackType ParseStack;
  1509. LONGINT StackSize;
  1510. LONGINT StackPtr;
  1511. # endif
  1512. {
  1513.   LONGINT State;
  1514.   yySymbolRange Nonterminal;
  1515.   yyStackType Stack;
  1516.  
  1517.   DynArray_MakeArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1518.   {
  1519.     LONGINT B_5 = 0, B_6 = StackPtr;
  1520.  
  1521.     if (B_5 <= B_6)
  1522.       for (State = B_5;; State += 1) {
  1523.         Stack->A[State] = ParseStack->A[State];
  1524.         if (State >= B_6) break;
  1525.       }
  1526.   }
  1527.   State = Stack->A[StackPtr];
  1528.   for (;;) {
  1529.     Stack->A[StackPtr] = State;
  1530.     State = Next((yyStateRange)State, Terminal);
  1531.     if (State == yyNoState) {
  1532.       DynArray_ReleaseArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1533.       return FALSE;
  1534.     }
  1535.     if (State <= yyLastReadTermState) {
  1536.       DynArray_ReleaseArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1537.       return TRUE;
  1538.     }
  1539.     for (;;) {
  1540.       if (State == yyStopState) {
  1541.         DynArray_ReleaseArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1542.         return TRUE;
  1543.       } else {
  1544.         DEC1(StackPtr, yyLength.A[State - 239]);
  1545.         Nonterminal = yyLeftHandSide.A[State - 239];
  1546.       }
  1547.       State = Next(Stack->A[StackPtr], Nonterminal);
  1548.       if (StackPtr >= StackSize) {
  1549.         DynArray_ExtendArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1550.       }
  1551.       INC(StackPtr);
  1552.       if (State < yyFirstFinalState) {
  1553.         goto EXIT_5;
  1554.       }
  1555.       State = yyFinalToProd.A[State - 160];
  1556.     } EXIT_5:;
  1557.   } EXIT_4:;
  1558. }
  1559.  
  1560. static void ComputeRestartPoints
  1561. # ifdef __STDC__
  1562. (yyStackType ParseStack, LONGINT StackSize, LONGINT StackPtr, Sets_tSet *RestartSet)
  1563. # else
  1564. (ParseStack, StackSize, StackPtr, RestartSet)
  1565. yyStackType ParseStack;
  1566. LONGINT StackSize;
  1567. LONGINT StackPtr;
  1568. Sets_tSet *RestartSet;
  1569. # endif
  1570. {
  1571.   yyStackType Stack;
  1572.   LONGINT State;
  1573.   yySymbolRange Nonterminal;
  1574.   Sets_tSet ContinueSet;
  1575.  
  1576.   DynArray_MakeArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1577.   {
  1578.     LONGINT B_7 = 0, B_8 = StackPtr;
  1579.  
  1580.     if (B_7 <= B_8)
  1581.       for (State = B_7;; State += 1) {
  1582.         Stack->A[State] = ParseStack->A[State];
  1583.         if (State >= B_8) break;
  1584.       }
  1585.   }
  1586.   Sets_MakeSet(&ContinueSet, (LONGCARD)yyLastTerminal);
  1587.   Sets_AssignEmpty(RestartSet);
  1588.   State = Stack->A[StackPtr];
  1589.   for (;;) {
  1590.     if (StackPtr >= StackSize) {
  1591.       DynArray_ExtendArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1592.     }
  1593.     Stack->A[StackPtr] = State;
  1594.     ComputeContinuation(Stack, StackSize, StackPtr, &ContinueSet);
  1595.     Sets_Union(RestartSet, ContinueSet);
  1596.     State = Next((yyStateRange)State, yyContinuation.A[State]);
  1597.     if (State >= yyFirstFinalState) {
  1598.       if (State <= yyLastReadTermState) {
  1599.         INC(StackPtr);
  1600.         State = yyFinalToProd.A[State - 160];
  1601.       }
  1602.       for (;;) {
  1603.         if (State == yyStopState) {
  1604.           DynArray_ReleaseArray((ADDRESS *)&Stack, &StackSize, (LONGINT)sizeof(yyStateRange));
  1605.           Sets_ReleaseSet(&ContinueSet);
  1606.           return;
  1607.         } else {
  1608.           DEC1(StackPtr, yyLength.A[State - 239]);
  1609.           Nonterminal = yyLeftHandSide.A[State - 239];
  1610.         }
  1611.         State = Next(Stack->A[StackPtr], Nonterminal);
  1612.         INC(StackPtr);
  1613.         if (State < yyFirstFinalState) {
  1614.           goto EXIT_7;
  1615.         }
  1616.         State = yyFinalToProd.A[State - 160];
  1617.       } EXIT_7:;
  1618.     } else {
  1619.       INC(StackPtr);
  1620.     }
  1621.   } EXIT_6:;
  1622. }
  1623.  
  1624. static yyStateRange Next
  1625. # ifdef __STDC__
  1626. (yyStateRange State, yySymbolRange Symbol)
  1627. # else
  1628. (State, Symbol)
  1629. yyStateRange State;
  1630. yySymbolRange Symbol;
  1631. # endif
  1632. {
  1633.   yyTCombTypePtr TCombPtr;
  1634.   yyNCombTypePtr NCombPtr;
  1635.  
  1636.   if (Symbol <= yyLastTerminal) {
  1637.     for (;;) {
  1638.       TCombPtr = (yyTCombTypePtr)((LONGCARD)yyTBasePtr.A[State] + Symbol * sizeof(yyTCombType));
  1639.       if (TCombPtr->Check != State) {
  1640.         State = yyDefault.A[State];
  1641.         if (State == yyNoState) {
  1642.           return yyNoState;
  1643.         }
  1644.       } else {
  1645.         return TCombPtr->Next;
  1646.       }
  1647.     } EXIT_8:;
  1648.   } else {
  1649.     NCombPtr = (yyNCombTypePtr)((LONGCARD)yyNBasePtr.A[State] + Symbol * sizeof(yyNCombType));
  1650.     return *NCombPtr;
  1651.   }
  1652. }
  1653.  
  1654. static void yyGetTables
  1655. # ifdef __STDC__
  1656. ()
  1657. # else
  1658. ()
  1659. # endif
  1660. {
  1661.   CARDINAL BlockSize, j, n;
  1662.   yyStateRange State;
  1663.   struct S_50 TBase;
  1664.   struct S_51 NBase;
  1665.  
  1666.   BlockSize = 64000 / sizeof(yyTCombType);
  1667.   yyTableFile = OpenInput(Parser_ParsTabName.A, 129L);
  1668.   yyErrorCheck((LONGINT)Errors_OpenParseTable, yyTableFile);
  1669.   if (yyGetTable(ADR(TBase)) / sizeof(yyTCombRange) - 1 != yyLastReadState || yyGetTable(ADR(NBase)) / sizeof(yyNCombRange) - 1 != yyLastReadState || yyGetTable(ADR(yyDefault)) / sizeof(yyReadRange) - 1 != yyLastReadState || yyGetTable(ADR(yyNComb)) / sizeof(yyNCombType) != yyNTableMax - yyLastTerminal || yyGetTable(ADR(yyLength)) / sizeof(yyTableElmt) - 1 != yyLastReduceState - yyFirstReduceState || yyGetTable(ADR(yyLeftHandSide)) / sizeof(yySymbolRange) - 1 != yyLastReduceState - yyFirstReduceState || yyGetTable(ADR(yyContinuation)) / sizeof(yySymbolRange) - 1 != yyLastReadState || yyGetTable(ADR(yyFinalToProd)) / sizeof(yyReduceRange) - 1 != yyLastReadNontermState - yyFirstReadTermState) {
  1670.     Errors_ErrorMessage((LONGCARD)Errors_WrongParseTable, (LONGCARD)Errors_Fatal, Positions_NoPosition);
  1671.   }
  1672.   n = 0;
  1673.   j = 0;
  1674.   while (j <= yyTableMax) {
  1675.     INC1(n, yyGetTable(ADR(yyTComb.A[j])) / sizeof(yyTCombType));
  1676.     INC1(j, BlockSize);
  1677.   }
  1678.   if (n != yyTableMax + 1) {
  1679.     Errors_ErrorMessage((LONGCARD)Errors_WrongParseTable, (LONGCARD)Errors_Fatal, Positions_NoPosition);
  1680.   }
  1681.   Close(yyTableFile);
  1682.   for (State = 1; State <= yyLastReadState; State += 1) {
  1683.     yyTBasePtr.A[State] = (yyTCombTypePtr)ADR(yyTComb.A[TBase.A[State]]);
  1684.   }
  1685.   for (State = 1; State <= yyLastReadState; State += 1) {
  1686.     yyNBasePtr.A[State] = (yyNCombTypePtr)ADR(yyNComb.A[NBase.A[State] - 48]);
  1687.   }
  1688. }
  1689.  
  1690. static CARDINAL yyGetTable
  1691. # ifdef __STDC__
  1692. (ADDRESS Address)
  1693. # else
  1694. (Address)
  1695. ADDRESS Address;
  1696. # endif
  1697. {
  1698.   INTEGER N;
  1699.   yyTableElmt Length;
  1700.  
  1701.   N = Read(yyTableFile, ADR(Length), (LONGINT)sizeof(yyTableElmt));
  1702.   yyErrorCheck((LONGINT)Errors_ReadParseTable, N);
  1703.   N = Read(yyTableFile, Address, (LONGINT)Length);
  1704.   yyErrorCheck((LONGINT)Errors_ReadParseTable, N);
  1705.   return Length;
  1706. }
  1707.  
  1708. static void yyErrorCheck
  1709. # ifdef __STDC__
  1710. (INTEGER ErrorCode, INTEGER Info)
  1711. # else
  1712. (ErrorCode, Info)
  1713. INTEGER ErrorCode;
  1714. INTEGER Info;
  1715. # endif
  1716. {
  1717.   INTEGER ErrNo;
  1718.  
  1719.   if (Info < 0) {
  1720.     ErrNo = ErrNum();
  1721.     Errors_ErrorMessageI((LONGCARD)ErrorCode, (LONGCARD)Errors_Fatal, Positions_NoPosition, (LONGCARD)Errors_Integer, ADR(ErrNo));
  1722.   }
  1723. }
  1724.  
  1725. static void BeginParser
  1726. # ifdef __STDC__
  1727. ()
  1728. # else
  1729. ()
  1730. # endif
  1731. {
  1732.   Scanner_BeginScanner();
  1733.   NameCount = 0;
  1734.   nNoParameter = Tree_mNoParameter();
  1735.   nNoName = Tree_mNoName();
  1736.   nNoRule = Tree_mNoRule();
  1737.   nNoDesignator = Tree_mNoDesignator();
  1738.   nNoStatement = Tree_mNoStatement();
  1739.   nNoLayout = Tree_mNoLayout();
  1740.   nNoPatternsList = Tree_mNoPatternsList();
  1741.   if (!yyIsInitialized) {
  1742.     yyIsInitialized = TRUE;
  1743.     yyGetTables();
  1744.   }
  1745. }
  1746.  
  1747. void Parser_CloseParser
  1748. # ifdef __STDC__
  1749. ()
  1750. # else
  1751. ()
  1752. # endif
  1753. {
  1754. }
  1755.  
  1756. void BEGIN_Parser()
  1757. {
  1758.   static BOOLEAN has_been_called = FALSE;
  1759.  
  1760.   if (!has_been_called) {
  1761.     has_been_called = TRUE;
  1762.  
  1763.     BEGIN_Scanner();
  1764.     BEGIN_Positions();
  1765.     BEGIN_Errors();
  1766.     BEGIN_Strings();
  1767.     BEGIN_DynArray();
  1768.     BEGIN_Sets();
  1769.     BEGIN_System();
  1770.     BEGIN_StringMem();
  1771.     BEGIN_Strings();
  1772.     BEGIN_Idents();
  1773.     BEGIN_Texts();
  1774.     BEGIN_Scanner();
  1775.     BEGIN_Positions();
  1776.     BEGIN_Tree();
  1777.  
  1778.     yyIsInitialized = FALSE;
  1779.     (void)strncpy((char *)Parser_ParsTabName.A, "Parser.Tab", sizeof(Parser_ParsTabName.A));
  1780.   }
  1781. }
  1782.